iT邦幫忙

2021 iThome 鐵人賽

DAY 29
0
自我挑戰組

C 語言筆記系列 第 29

[C 語言筆記--Day29] 6.S081 Lab syscall: Sysinfo ( III )

  • 分享至 

  • xImage
  •  

接續昨天的題目

原本今天打算寫完這題的,但一直卡在一個地方,

就先貼出我寫到一半的成果吧

// kernel/sysproc.c
uint64
sys_sysinfo(void)
{
  uint64 info;
  struct sysinfo kinfo;
  struct proc *p = myproc();

  if(argaddr(0, &info) < 0)
    return -1;

  kinfo.freemem = freemem();
  kinfo.nproc = nproc();

  if(copyout(p->pagetable, info, (char *)&kinfo, sizeof(info)) < 0)
    return -1;
  
  return 0;
}
// kernel/kalloc.c
uint64
freemem(void)
{
  uint64 npage = 0;
  struct run *r;
  r = kmem.freelist;

  while (r) {
    npage++;
    r = r->next;
  }
  
  return npage * PGSIZE;
}

上一篇
[C 語言筆記--Day27] 6.S081 Lab syscall: Sysinfo ( II )
下一篇
[C 語言筆記--Day30] 最後一天的心得
系列文
C 語言筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言